package com.codeduck.injection.config;

import com.codeduck.injection.entity.Cup;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

/**
 * @author: <a href="mailto:codeduck@163.com">Codeduck</a>
 * @createDate: 2021-12-24
 */
@Configuration
public class ScopeBeanConfig {

    /**
     * 测试方法 {@link com.codeduck.injection.ScopeBeanConfigTest}
     *
     * Bean 的作用域范围包括：
     * 1. singleton：单实例（默认）,在Spring IOC容器启动的时候会调用方法创建对象然后纳入到IOC容器中，以后每次获取都是直接从IOC容器中获取（map.get()）；
     * 2. prototype：多实例，IOC容器启动的时候并不会去创建对象，而是在每次获取的时候才会去调用方法创建对象；
     * 3. request：一个请求对应一个实例；
     * 4. session：同一个session对应一个实例。
     */
    @Bean
    @Scope(value = "prototype")
    public Cup cup() {
        return new Cup();
    }
}
